table(df_f_sc_fd_v2_copy$tr_ob_imp)
table(df_f_sc_sn_v2_copy$tr_ob_imp)
table(df_f_sc_n_v2_copy$tr_ob_imp)
table(df_f_sc_t_v2_copy$tr_ob_imp)
table(df_f_sc_fd_copy$tr_ob[!is.na(df_f_sc_fd_copy$Y)])
table(df_f_sc_fd_copy$tr_ob[!is.na(df_f_sc_fd_copy$Y)])
table(df_f_sc_sn_copy$tr_ob[!is.na(df_f_sc_sn_copy$Y)])
table(df_f_sc_n_copy$tr_ob[!is.na(df_f_sc_n_copy$Y)])
table(df_f_sc_t_copy$tr_ob[!is.na(df_f_sc_t_copy$Y)])
table(df_f_sc_fd_copy$tr_ob_imp[!is.na(df_f_sc_fd_copy$Y)])
table(df_f_sc_sn_copy$tr_ob_imp[!is.na(df_f_sc_sn_copy$Y)])
table(df_f_sc_n_copy$tr_ob_imp[!is.na(df_f_sc_n_copy$Y)])
table(df_f_sc_t_copy$tr_ob_imp[!is.na(df_f_sc_t_copy$Y)])
table(df_f_sc_fd_v2_copy$tr_ob_imp[!is.na(df_f_sc_fd_v2_copy$Y)])
table(df_f_sc_sn_v2_copy$tr_ob_imp[!is.na(df_f_sc_sn_v2_copy$Y)])
table(df_f_sc_n_v2_copy$tr_ob_imp[!is.na(df_f_sc_n_v2_copy$Y)])
table(df_f_sc_t_v2_copy$tr_ob_imp[!is.na(df_f_sc_t_v2_copy$Y)])
n_w_sn_cle_le <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_obs)
imp_n_w_sn_cle_le <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_imp)
n_w_sn_cle_le_v2 <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_obs)
imp_n_w_sn_cle_le_v2 <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_imp)
# summary(n_w_sn_cle_le)
# Non-durables
n_w_n_cle_le <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_obs)
imp_n_w_n_cle_le <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_imp)
n_w_n_cle_le_v2 <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_obs)
imp_n_w_n_cle_le_v2 <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_imp)
# summary(n_w_n_cle_le)
# Total
n_w_t_cle_le <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_obs)
imp_n_w_t_cle_le <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_imp)
n_w_t_cle_le_v2 <- feols(Y_new ~ s_EIPI_t + s_EIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_obs)
imp_n_w_t_cle_le_v2 <- feols(Y_new_imp ~ s_impEIPI_t + s_impEIPI_tm1,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_imp)
# summary(n_w_t_cle_le)
etable(n_w_sn_cle_le,n_w_n_cle_le,n_w_t_cle_le, style.tex = style.tex("aer"))
etable(imp_n_w_sn_cle_le,imp_n_w_n_cle_le,imp_n_w_t_cle_le, style.tex = style.tex("aer"))
etable(imp_n_w_sn_cle_le_v2,imp_n_w_n_cle_le_v2,imp_n_w_t_cle_le_v2, style.tex = style.tex("aer"))
deltaMethod(imp_n_w_sn_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_sn_cle_le))
deltaMethod(imp_n_w_n_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_n_cle_le))
deltaMethod(imp_n_w_t_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_t_cle_le))
deltaMethod(n_w_sn_cle_le_v2, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_sn_cle_le_v2))
deltaMethod(n_w_n_cle_le_v2, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_n_cle_le_v2))
deltaMethod(n_w_t_cle_le_v2, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_t_cle_le_v2))
deltaMethod(imp_n_w_sn_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_sn_cle_le_v2))
deltaMethod(imp_n_w_n_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_n_cle_le_v2))
deltaMethod(imp_n_w_t_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_t_cle_le_v2))
deltaMethod(n_w_sn_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_sn_cle_le))
deltaMethod(n_w_n_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_n_cle_le))
deltaMethod(n_w_t_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_t_cle_le))
deltaMethod(imp_n_w_sn_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_sn_cle_le))
deltaMethod(imp_n_w_n_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_n_cle_le))
deltaMethod(imp_n_w_t_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_t_cle_le))
deltaMethod(n_w_sn_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_sn_cle_le))
deltaMethod(n_w_n_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_n_cle_le))
deltaMethod(n_w_t_cle_le, "s_EIPI_t+s_EIPI_t+s_EIPI_tm1",vcov.=vcov(n_w_t_cle_le))
deltaMethod(imp_n_w_sn_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_sn_cle_le))
deltaMethod(imp_n_w_n_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_n_cle_le))
deltaMethod(imp_n_w_t_cle_le, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_t_cle_le))
deltaMethod(imp_n_w_sn_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_sn_cle_le_v2))
deltaMethod(imp_n_w_n_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_n_cle_le_v2))
deltaMethod(imp_n_w_t_cle_le_v2, "s_impEIPI_t+s_impEIPI_t+s_impEIPI_tm1",vcov.=vcov(imp_n_w_t_cle_le_v2))
### Table VI ####
# df_f_split <- df_f %>% filter(!(is.na(d_EX_N_t)) & !is.na(EIPI_t) & EIPI_t > 0)
df_f_split <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(imp_eip1t) & imp_eip1t > 0)
# Different cut offs if you drop 2102 data
# Without drop
#   Q1 = 2000
#   Q2 = 12666.67
# With drop
#   Q1 = 2000
#   Q2 = 14333.33
wtd.quantile(df_f_split$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
wtd.quantile(df_f_split$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_split <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(imp_eip1t) & imp_eip1t > 0)
# Different cut offs if you drop 2102 data
# Without drop
#   Q1 = 2000
#   Q2 = 12666.67
# With drop
#   Q1 = 2000
#   Q2 = 13666.67
wtd.quantile(df_f_split$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
wtd.quantile(df_f_split$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
liq_groups <- function(df){
df <- df %>% mutate(
low_liq = ifelse(LIQUDYRX<=2000,1,0),
high_liq = ifelse(LIQUDYRX>=13666.67,1,0),
mid_liq = ifelse((LIQUDYRX<13666.67 & LIQUDYRX>2000),1,0),
s_EIPI_t_low = s_EIPI_t*low_liq,
s_EIPI_t_mid = s_EIPI_t*mid_liq,
s_EIPI_t_high = s_EIPI_t*high_liq,
s_EIPI_tm1_low = s_EIPI_tm1*low_liq,
s_EIPI_tm1_mid = s_EIPI_tm1*mid_liq,
s_EIPI_tm1_high = s_EIPI_tm1*high_liq,
s_impEIPI_t_low = s_impEIPI_t*low_liq,
s_impEIPI_t_mid = s_impEIPI_t*mid_liq,
s_impEIPI_t_high = s_impEIPI_t*high_liq,
s_impEIPI_tm1_low = s_impEIPI_tm1*low_liq,
s_impEIPI_tm1_mid = s_impEIPI_tm1*mid_liq,
s_impEIPI_tm1_high = s_impEIPI_tm1*high_liq)
return(df)
}
imputation_liq <- function(df){
# Imputation with observed EIP data
df_uno <- df %>% filter(tr_ob==0)
# Step 1: Computing coefficients using only never-treated and not-yet treated units
base <- feols(Y ~ 0 + low_liq  + high_liq +
s_AGE_AVG_t + s_d_NUM_ADTS_t + s_d_NUM_KIDS_t + factor(YYMM),
weights=~FINLWT21_AVG,cluster=~ID, data=df_uno)
summary(base)
# Step 2: Imputing the counter-factual outcomes
df = df %>% mutate(
coeff_low_liq = base$coefficients[1],
coeff_high_liq = base$coefficients[2],
coeff_AGE = base$coefficients[3],
coeff_ADTS = base$coefficients[4],
coeff_KIDS = base$coefficients[5],
YYMM_fe = ifelse(YYMM==1912,base$coefficients[6],
ifelse(YYMM==2001,base$coefficients[7],
ifelse(YYMM==2003,base$coefficients[8],
ifelse(YYMM==2004,base$coefficients[9],
ifelse(YYMM==2006,base$coefficients[10],
ifelse(YYMM==2007,base$coefficients[11],
ifelse(YYMM==2009,base$coefficients[12],
ifelse(YYMM==2010,base$coefficients[13],
ifelse(YYMM==2012,base$coefficients[14],base$coefficients[15]))))))))),
Y_0 = coeff_low_liq * low_liq + coeff_high_liq * high_liq +
coeff_AGE * s_AGE_AVG_t + coeff_ADTS * s_d_NUM_ADTS_t + coeff_KIDS * s_d_NUM_KIDS_t + YYMM_fe,
# Step 3: Differencing the counter-factual from the observed outcome
Y_new = Y - Y_0)
# Imputation with observed EIP data
df_uno_imp <- df %>% filter(tr_ob_imp==0)
# Step 1: Computing coefficients using only never-treated and not-yet treated units
base_imp <- feols(Y ~ 0 + low_liq  + high_liq +
s_AGE_AVG_t + s_d_NUM_ADTS_t + s_d_NUM_KIDS_t + factor(YYMM),
weights=~FINLWT21_AVG,cluster=~ID, data=df_uno)
# Step 2: Imputing the counter-factual outcomes
df = df %>% mutate(
coeff_low_liq_imp = base_imp$coefficients[1],
coeff_high_liq_imp = base_imp$coefficients[2],
coeff_AGE_imp = base_imp$coefficients[3],
coeff_ADTS_imp = base_imp$coefficients[4],
coeff_KIDS_imp = base_imp$coefficients[5],
YYMM_fe_imp = ifelse(YYMM==1912,base_imp$coefficients[6],
ifelse(YYMM==2001,base_imp$coefficients[7],
ifelse(YYMM==2003,base_imp$coefficients[8],
ifelse(YYMM==2004,base_imp$coefficients[9],
ifelse(YYMM==2006,base_imp$coefficients[10],
ifelse(YYMM==2007,base_imp$coefficients[11],
ifelse(YYMM==2009,base_imp$coefficients[12],
ifelse(YYMM==2010,base_imp$coefficients[13],
ifelse(YYMM==2012,base_imp$coefficients[14],base_imp$coefficients[15]))))))))),
Y_0_imp = coeff_low_liq_imp * low_liq + coeff_high_liq_imp * high_liq +
coeff_AGE_imp * s_AGE_AVG_t + coeff_ADTS_imp * s_d_NUM_ADTS_t + coeff_KIDS_imp * s_d_NUM_KIDS_t + YYMM_fe_imp,
# Step 3: Differencing the counter-factual from the observed outcome
Y_new_imp = Y - Y_0_imp)
return(df)
}
df_f_sc_fd <- liq_groups(df_f_sc_fd_copy)
df_f_sc_fd <- imputation_liq(df_f_sc_fd)
df_f_sc_fd_obs <- df_f_sc_fd %>% filter(tr_ob==1)
df_f_sc_fd_imp <- df_f_sc_fd %>% filter(tr_ob_imp==1)
df_f_sc_sn <- liq_groups(df_f_sc_sn_copy)
df_f_sc_sn <- imputation_liq(df_f_sc_sn)
df_f_sc_sn_obs <- df_f_sc_sn %>% filter(tr_ob==1)
df_f_sc_sn_imp <- df_f_sc_sn %>% filter(tr_ob_imp==1)
df_f_sc_n <- liq_groups(df_f_sc_n_copy)
df_f_sc_n <- imputation_liq(df_f_sc_n)
df_f_sc_n_obs <- df_f_sc_n %>% filter(tr_ob==1)
df_f_sc_n_imp <- df_f_sc_n %>% filter(tr_ob_imp==1)
df_f_sc_t <- liq_groups(df_f_sc_t_copy)
df_f_sc_t <- imputation_liq(df_f_sc_t)
df_f_sc_t_obs <- df_f_sc_t %>% filter(tr_ob==1)
df_f_sc_t_imp <- df_f_sc_t %>% filter(tr_ob_imp==1)
df_f_sc_fd_v2 <- liq_groups(df_f_sc_fd_v2_copy)
df_f_sc_fd_v2 <- imputation_liq(df_f_sc_fd_v2)
df_f_sc_fd_v2_obs <- df_f_sc_fd_v2 %>% filter(tr_ob==1)
df_f_sc_fd_v2_imp <- df_f_sc_fd_v2 %>% filter(tr_ob_imp==1)
df_f_sc_sn_v2 <- liq_groups(df_f_sc_sn_v2_copy)
df_f_sc_sn_v2 <- imputation_liq(df_f_sc_sn_v2)
df_f_sc_sn_v2_obs <- df_f_sc_sn_v2 %>% filter(tr_ob==1)
df_f_sc_sn_v2_imp <- df_f_sc_sn_v2 %>% filter(tr_ob_imp==1)
df_f_sc_n_v2 <- liq_groups(df_f_sc_n_v2_copy)
df_f_sc_n_v2 <- imputation_liq(df_f_sc_n_v2)
df_f_sc_n_v2_obs <- df_f_sc_n_v2 %>% filter(tr_ob==1)
df_f_sc_n_v2_imp <- df_f_sc_n_v2 %>% filter(tr_ob_imp==1)
df_f_sc_t_v2 <- liq_groups(df_f_sc_t_v2_copy)
df_f_sc_t_v2 <- imputation_liq(df_f_sc_t_v2)
df_f_sc_t_v2_obs <- df_f_sc_t_v2 %>% filter(tr_ob==1)
df_f_sc_t_v2_imp <- df_f_sc_t_v2 %>% filter(tr_ob_imp==1)
# Food
n_w_fd_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_obs)
imp_n_w_fd_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_imp)
n_w_fd_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_v2_obs)
imp_n_w_fd_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_v2_imp)
# summary(n_w_fd_cle_le_liq)
# Strictly non-durables
n_w_sn_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_obs)
imp_n_w_sn_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_imp)
n_w_sn_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_obs)
imp_n_w_sn_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_imp)
# summary(n_w_sn_cle_le_liq)
# Non-durables
n_w_n_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_obs)
imp_n_w_n_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_imp)
n_w_n_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_obs)
imp_n_w_n_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_imp)
# summary(n_w_n_cle_le_liq)
# Total
n_w_t_cle_le_liq <-feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_obs)
imp_n_w_t_cle_le_liq <-feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_imp)
n_w_t_cle_le_liq_v2 <-feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_obs)
imp_n_w_t_cle_le_liq_v2 <-feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_imp)
# summary(n_w_t_cle_le_liq)
etable(n_w_fd_cle_le_liq,n_w_sn_cle_le_liq,n_w_n_cle_le_liq,n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq,imp_n_w_sn_cle_le_liq,imp_n_w_n_cle_le_liq,imp_n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq_v2,imp_n_w_sn_cle_le_liq_v2,imp_n_w_n_cle_le_liq_v2,imp_n_w_t_cle_le_liq_v2, style.tex = style.tex("aer"))
df_f_split <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(imp_eip1t) & imp_eip1t > 0 & imp_eip1t < 4520)
wtd.quantile(df_f_split$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
wtd.quantile(df_f_split$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
### Table VI ####
df_f_split <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(EIPI_t) & EIPI_t > 0)
wtd.quantile(df_f_split$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
wtd.quantile(df_f_split$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_split_obs <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(EIPI_t) & EIPI_t > 0)
df_f_split_imp <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(imp_eip1t) & imp_eip1t > 0)
df_f_split_imp_v2 <- df_f_imp %>% filter(!(is.na(d_EX_N_t)) & !is.na(imp_eip1t) & imp_eip1t > 0 & imp_eip1t < 4520)
liq_groups <- function(df){
df <- df %>% mutate(
low_liq = ifelse(LIQUDYRX<=lqd_q1,1,0),
high_liq = ifelse(LIQUDYRX>=lqd_q2,1,0),
mid_liq = ifelse((LIQUDYRX<lqd_q2 & LIQUDYRX>lqd_q1),1,0),
s_EIPI_t_low = s_EIPI_t*low_liq,
s_EIPI_t_mid = s_EIPI_t*mid_liq,
s_EIPI_t_high = s_EIPI_t*high_liq,
s_EIPI_tm1_low = s_EIPI_tm1*low_liq,
s_EIPI_tm1_mid = s_EIPI_tm1*mid_liq,
s_EIPI_tm1_high = s_EIPI_tm1*high_liq,
s_impEIPI_t_low = s_impEIPI_t*low_liq,
s_impEIPI_t_mid = s_impEIPI_t*mid_liq,
s_impEIPI_t_high = s_impEIPI_t*high_liq,
s_impEIPI_tm1_low = s_impEIPI_tm1*low_liq,
s_impEIPI_tm1_mid = s_impEIPI_tm1*mid_liq,
s_impEIPI_tm1_high = s_impEIPI_tm1*high_liq)
return(df)
}
imputation_liq <- function(df){
# Imputation with observed EIP data
df_uno <- df %>% filter(tr_ob==0)
# Step 1: Computing coefficients using only never-treated and not-yet treated units
base <- feols(Y ~ 0 + low_liq  + high_liq +
s_AGE_AVG_t + s_d_NUM_ADTS_t + s_d_NUM_KIDS_t + factor(YYMM),
weights=~FINLWT21_AVG,cluster=~ID, data=df_uno)
summary(base)
# Step 2: Imputing the counter-factual outcomes
df = df %>% mutate(
coeff_low_liq = base$coefficients[1],
coeff_high_liq = base$coefficients[2],
coeff_AGE = base$coefficients[3],
coeff_ADTS = base$coefficients[4],
coeff_KIDS = base$coefficients[5],
YYMM_fe = ifelse(YYMM==1912,base$coefficients[6],
ifelse(YYMM==2001,base$coefficients[7],
ifelse(YYMM==2003,base$coefficients[8],
ifelse(YYMM==2004,base$coefficients[9],
ifelse(YYMM==2006,base$coefficients[10],
ifelse(YYMM==2007,base$coefficients[11],
ifelse(YYMM==2009,base$coefficients[12],
ifelse(YYMM==2010,base$coefficients[13],
ifelse(YYMM==2012,base$coefficients[14],base$coefficients[15]))))))))),
Y_0 = coeff_low_liq * low_liq + coeff_high_liq * high_liq +
coeff_AGE * s_AGE_AVG_t + coeff_ADTS * s_d_NUM_ADTS_t + coeff_KIDS * s_d_NUM_KIDS_t + YYMM_fe,
# Step 3: Differencing the counter-factual from the observed outcome
Y_new = Y - Y_0)
# Imputation with observed EIP data
df_uno_imp <- df %>% filter(tr_ob_imp==0)
# Step 1: Computing coefficients using only never-treated and not-yet treated units
base_imp <- feols(Y ~ 0 + low_liq  + high_liq +
s_AGE_AVG_t + s_d_NUM_ADTS_t + s_d_NUM_KIDS_t + factor(YYMM),
weights=~FINLWT21_AVG,cluster=~ID, data=df_uno)
# Step 2: Imputing the counter-factual outcomes
df = df %>% mutate(
coeff_low_liq_imp = base_imp$coefficients[1],
coeff_high_liq_imp = base_imp$coefficients[2],
coeff_AGE_imp = base_imp$coefficients[3],
coeff_ADTS_imp = base_imp$coefficients[4],
coeff_KIDS_imp = base_imp$coefficients[5],
YYMM_fe_imp = ifelse(YYMM==1912,base_imp$coefficients[6],
ifelse(YYMM==2001,base_imp$coefficients[7],
ifelse(YYMM==2003,base_imp$coefficients[8],
ifelse(YYMM==2004,base_imp$coefficients[9],
ifelse(YYMM==2006,base_imp$coefficients[10],
ifelse(YYMM==2007,base_imp$coefficients[11],
ifelse(YYMM==2009,base_imp$coefficients[12],
ifelse(YYMM==2010,base_imp$coefficients[13],
ifelse(YYMM==2012,base_imp$coefficients[14],base_imp$coefficients[15]))))))))),
Y_0_imp = coeff_low_liq_imp * low_liq + coeff_high_liq_imp * high_liq +
coeff_AGE_imp * s_AGE_AVG_t + coeff_ADTS_imp * s_d_NUM_ADTS_t + coeff_KIDS_imp * s_d_NUM_KIDS_t + YYMM_fe_imp,
# Step 3: Differencing the counter-factual from the observed outcome
Y_new_imp = Y - Y_0_imp)
return(df)
}
lqd_q1 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_fd <- liq_groups(df_f_sc_fd_copy)
df_f_sc_fd <- imputation_liq(df_f_sc_fd)
df_f_sc_fd_obs <- df_f_sc_fd %>% filter(tr_ob==1)
lqd_q1 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_fd <- liq_groups(df_f_sc_fd_copy)
df_f_sc_fd <- imputation_liq(df_f_sc_fd)
df_f_sc_fd_imp <- df_f_sc_fd %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_sn <- liq_groups(df_f_sc_sn_copy)
df_f_sc_sn <- imputation_liq(df_f_sc_sn)
df_f_sc_sn_obs <- df_f_sc_sn %>% filter(tr_ob==1)
lqd_q1 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_sn <- liq_groups(df_f_sc_sn_copy)
df_f_sc_sn <- imputation_liq(df_f_sc_sn)
df_f_sc_sn_imp <- df_f_sc_sn %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_n <- liq_groups(df_f_sc_n_copy)
df_f_sc_n <- imputation_liq(df_f_sc_n)
df_f_sc_n_obs <- df_f_sc_n %>% filter(tr_ob==1)
lqd_q1 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_n <- liq_groups(df_f_sc_n_copy)
df_f_sc_n <- imputation_liq(df_f_sc_n)
df_f_sc_n_imp <- df_f_sc_n %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_obs$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_t <- liq_groups(df_f_sc_t_copy)
df_f_sc_t <- imputation_liq(df_f_sc_t)
df_f_sc_t_obs <- df_f_sc_t %>% filter(tr_ob==1)
lqd_q1 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_t <- liq_groups(df_f_sc_t_copy)
df_f_sc_t <- imputation_liq(df_f_sc_t)
df_f_sc_t_imp <- df_f_sc_t %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_fd_v2 <- liq_groups(df_f_sc_fd_v2_copy)
df_f_sc_fd_v2 <- imputation_liq(df_f_sc_fd_v2)
df_f_sc_fd_v2_obs <- df_f_sc_fd_v2 %>% filter(tr_ob==1)
df_f_sc_fd_v2_imp <- df_f_sc_fd_v2 %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_sn_v2 <- liq_groups(df_f_sc_sn_v2_copy)
df_f_sc_sn_v2 <- imputation_liq(df_f_sc_sn_v2)
df_f_sc_sn_v2_obs <- df_f_sc_sn_v2 %>% filter(tr_ob==1)
df_f_sc_sn_v2_imp <- df_f_sc_sn_v2 %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_n_v2 <- liq_groups(df_f_sc_n_v2_copy)
df_f_sc_n_v2 <- imputation_liq(df_f_sc_n_v2)
df_f_sc_n_v2_obs <- df_f_sc_n_v2 %>% filter(tr_ob==1)
df_f_sc_n_v2_imp <- df_f_sc_n_v2 %>% filter(tr_ob_imp==1)
lqd_q1 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=1/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
lqd_q2 <- wtd.quantile(df_f_split_imp_v2$LIQUDYRX, q=2/3, na.rm = TRUE, weight=df_f_split$FINLWT21_AVG)
df_f_sc_t_v2 <- liq_groups(df_f_sc_t_v2_copy)
df_f_sc_t_v2 <- imputation_liq(df_f_sc_t_v2)
df_f_sc_t_v2_obs <- df_f_sc_t_v2 %>% filter(tr_ob==1)
df_f_sc_t_v2_imp <- df_f_sc_t_v2 %>% filter(tr_ob_imp==1)
# Food
n_w_fd_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_obs)
imp_n_w_fd_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_imp)
n_w_fd_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_v2_obs)
imp_n_w_fd_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_fd_v2_imp)
# summary(n_w_fd_cle_le_liq)
# Strictly non-durables
n_w_sn_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_obs)
imp_n_w_sn_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_imp)
n_w_sn_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_obs)
imp_n_w_sn_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_sn_v2_imp)
# summary(n_w_sn_cle_le_liq)
# Non-durables
n_w_n_cle_le_liq <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_obs)
imp_n_w_n_cle_le_liq <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_imp)
n_w_n_cle_le_liq_v2 <- feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_obs)
imp_n_w_n_cle_le_liq_v2 <- feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_n_v2_imp)
# summary(n_w_n_cle_le_liq)
# Total
n_w_t_cle_le_liq <-feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_obs)
imp_n_w_t_cle_le_liq <-feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_imp)
n_w_t_cle_le_liq_v2 <-feols(Y_new ~ low_liq + high_liq +
s_EIPI_t + s_EIPI_t_low + s_EIPI_t_high +
s_EIPI_tm1 + s_EIPI_tm1_low + s_EIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_obs)
imp_n_w_t_cle_le_liq_v2 <-feols(Y_new_imp ~ low_liq + high_liq +
s_impEIPI_t + s_impEIPI_t_low + s_impEIPI_t_high +
s_impEIPI_tm1 + s_impEIPI_tm1_low + s_impEIPI_tm1_high,
weights=~FINLWT21_AVG,cluster=~ID, data=df_f_sc_t_v2_imp)
etable(n_w_fd_cle_le_liq,n_w_sn_cle_le_liq,n_w_n_cle_le_liq,n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq,imp_n_w_sn_cle_le_liq,imp_n_w_n_cle_le_liq,imp_n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq_v2,imp_n_w_sn_cle_le_liq_v2,imp_n_w_n_cle_le_liq_v2,imp_n_w_t_cle_le_liq_v2, style.tex = style.tex("aer"))
etable(n_w_fd_cle_le_liq,n_w_n_cle_le_liq,n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq,imp_n_w_n_cle_le_liq,imp_n_w_t_cle_le_liq, style.tex = style.tex("aer"))
etable(imp_n_w_fd_cle_le_liq_v2,imp_n_w_n_cle_le_liq_v2,imp_n_w_t_cle_le_liq_v2, style.tex = style.tex("aer"))
linearHypothesis(n_w_fd_cle_le_liq, c("s_EIPI_t_low=0","s_EIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(n_w_fd_cle_le_liq))
linearHypothesis(n_w_n_cle_le_liq, c("s_EIPI_t_low=0","s_EIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(n_w_n_cle_le_liq))
linearHypothesis(n_w_t_cle_le_liq, c("s_EIPI_t_low=0","s_EIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(n_w_t_cle_le_liq))
linearHypothesis(imp_n_w_fd_cle_le_liq, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_fd_cle_le_liq))
linearHypothesis(imp_n_w_n_cle_le_liq, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_n_cle_le_liq))
linearHypothesis(imp_n_w_t_cle_le_liq, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_t_cle_le_liq))
linearHypothesis(imp_n_w_fd_cle_le_liq_v2, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_fd_cle_le_liq_v2))
linearHypothesis(imp_n_w_n_cle_le_liq_v2, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_n_cle_le_liq_v2))
linearHypothesis(imp_n_w_t_cle_le_liq_v2, c("s_impEIPI_t_low=0","s_impEIPI_t_high=0"),white.adjust = "hc1",vcov.=vcov(imp_n_w_t_cle_le_liq_v2))
